<?php
include_once("Base.php");

class Beneficiario extends class_Base{
	function __construct() {
		parent::__construct();
	}

	public function getAll($critery) {
		$condition = $this->getCondition($critery, true);
		$query = "select * from beneficiarios ".$condition;

		return $this->getObjectArray($query);
	}

	public function getAllForTitular($id_persona_plan) {
		$query = "select
						b.id_beneficiario,
						b.id_persona,
						pe.nombre, 
						pe.apellido, 
						pe.dni,
						case b.parentesco
							when 'CO' then 'Cónyuge'
							when 'CU' then 'Cuñado'
							when 'SU' then 'Suegro/a'
							when 'YN' then 'Yerno/Nuera'
							when 'PR' then 'Primo/a'
							when 'TI' then 'Tio/a'
							when 'HI' then 'Hijo/a'
							when 'NI' then 'Nieto/a'
							when 'PA' then 'Padre/Madre'
							when 'HE' then 'Hermano/a'
							when 'SO' then 'Sobrino/a'
							when 'AB' then 'Abuelo/a'
							when 'AM' then 'Amigo/a'
							when 'NN' then 'N/N'
						end as tipo_parentesco
				  from beneficiario b
				  	   inner join persona pe on b.id_persona = pe.id_persona 
				  where b.estado = 1 and
				  		pe.estado = 1 and  
				  		b.id_persona_plan = ".$id_persona_plan;
		return $this->getObjectArray($query);
	}

	public function getOwn($id, $critery){
		$query = "select * from beneficiario where id_beneficiario =".$id;
		$object = $this->getObject($query);
		return $object[0];
	}

	public function insert($beneficiario){
		$query = "insert into beneficiario (
								id_persona,
								id_persona_plan,
								parentesco, 
								porcentaje,
								conyuge, 
								asegurado
							) values(
								".$beneficiario->id_persona.",
								".$beneficiario->id_persona_plan.",
								'".$beneficiario->parentesco."',
								".$beneficiario->porcentaje.",
								'".$beneficiario->conyuge."',
								'".$beneficiario->asegurado."'
							)";

		return $this->execute($query);
	}

	public function edit($beneficiario){
		$query = "update beneficiario set
						id_persona = ".$beneficiario->id_persona.",
						id_persona_plan=".$beneficiario->id_persona_plan.",
						parentesco='".$beneficiario->parentesco."', 
						porcentaje=".$beneficiario->porcentaje.",
						conyuge='".$beneficiario->conyuge."',
						asegurado='".$beneficiario->asegurado."'
				  where id_beneficiario = ".$beneficiario->id_beneficiario;
		
		return $this->execute($query);
	}

	public function delete($id){
		$query = "update beneficiario set estado = 0 where id_beneficiario =".$id;
		return $this->execute($query);
	}

	public function exceedsMaximumAllowed($idPersonaPlan){
		$query = "select
					   count(*) as cantidad_beneficiarios_titular,
					   p.cantidad_beneficiarios as cantidad_permitida 
				  from beneficiario b
					     inner join persona_plan pp on b.id_persona_plan = pp.id_persona_plan
						        inner join plan p on p.id_plan = pp.id_plan
				  where b.estado = 1 and 
				  		pp.estado = 1 and
				  		p.estado = 1 and
				        b.id_persona_plan = " . $idPersonaPlan;

		$obj = $this->getObject($query);
		$cantidadBeneficiarios = (int)$obj[0]->cantidad_beneficiarios_titular;
		$cantidadPermitida = (int)$obj[0]->cantidad_permitida;
		
		return ($cantidadBeneficiarios >= $cantidadPermitida);
	}
	
	
	public function exceedsAllowedPercentage($percentage, $idPersonaPlan, $idBeneficiario = null){
		$query = "select 
					sum( b.porcentaje ) as suma_porcentaje
				  from beneficiario b
				  	   inner join persona_plan pp on b.id_persona_plan = pp.id_persona_plan
						        inner join plan p on p.id_plan = pp.id_plan
				  where b.estado = 1 and
				  		pp.estado = 1 and
				  		p.estado = 1 and 
				        b.id_persona_plan = " . $idPersonaPlan;
		if ($idBeneficiario){
			$query .= " and b.id_beneficiario <> " . $idBeneficiario;
		}
		$obj = $this->getObject($query);
			
		return (($obj[0]->suma_porcentaje + $percentage) > 100);
	}
	
	public function exists($idPersonaPlan, $idPersona, $idBeneficiario = null){
		$query = "select * from beneficiario 
				  where estado = 1 and 
				  		id_persona_plan = ". $idPersonaPlan . " and 
	 			    	id_persona = ". $idPersona;  
		if ($idBeneficiario){
			$query .= " and id_beneficiario <> " . $idBeneficiario;
		}
		$obj = $this->getObject($query);

		return ($obj[0])? true : false;
	}
}
?>